Certain printers, printing devices, and multifunction peripherals (MFP) (collectively known as “printers”) incorporate an Internet-enabling technology into their firmware. An example is Hewlett Packard's Chai™ appliance infrastructure. The Chai™ appliance infrastructure includes several enabling components, including ChaiServer™ that is an embedded web server (EWS), and ChaiVM™ that is an embedded virtual machine (EVM). The ChaiServer™ enables a printer to be accessed over the Internet via an Internet browser using standard protocols such as hyper-text transfer protocol (HTTP), and further provides an environment in which web programs can be executed. The output of these web programs can then be displayed on a web browser for use by a printer's user. The ChaiVM™ provides an execution environment for Java programs that make use of industry standard application programming interfaces (APIs) to enhance printer functionality.
An example of a printer application is the Chai™ Advanced Device Information Solution (ADIS) 100 remote printer management solution developed by Euroform. This printer application allows a printer to process email requests for device status, and return an email message with the requested device status information. Another printer application is Chai™ AutoPrint WebSource by DataScan. This printer application enables a printer to automatically retrieve and print web pages according to a predefined time interval. Yet another example of a printer application is the Remote Firmware Upgrade utility (RFU) from Hewlett-Packard. This web-based application interacts with a printer's Chai server to update the printer's existing firmware components. Users can initiate an upgrade session with the RFU by navigating to the printer's home page and clicking on a web link that requests an upgrade process from a HP-supplied web site.
Printer applications are usually stored on a writeable memory device, such as a hard disk, single inline memory module (SIMM), a dual inline memory module (DIMM), compact flash module, etc. These memory devices are typically controlled by a firmware module that is capable of formatting the media as a file system. In this way, files can be added, removed and modified from the media similar to the way files are managed by an Operating System executing on a desktop computer. A printer manufacturer and/or a third party solution provider installs printer solutions using a designated software installation interface that, in turn, stores the application files on the appropriate writeable memory device.
ChaiServer™ provides programmatic interfaces for application installation. These interfaces can be accessed via several methods including use of a web browser-based application using HTTP commands that are processed by the ChaiServer™ component. In this way, printer applications can be installed via the Internet or Intranet, depending upon the printer's network configuration. The ChaiServer™ works with other system components to store the application file on the appropriate writeable memory device that is coupled directly or indirectly to the printer.
With the ability to provide printers with different application programs and firmware updates, it is expected that incompatibility may arise between an application program and a printer's updated firmware components. This is a concern when a third party solution provider attempts to download or install software to the printer. Without detailed knowledge of the current software that is installed on the printer, in particular the version information of each firmware component, the version information of each application component from an existing installation, and the version information of each printer firmware component, a third party solution provider is not able to adequately determine if the proposed software will execute properly after it is installed.
Typically, when a printer manufacturer and/or third party solution provider desires to modify or determine status of software, particularly application programs, of a printer, there may be insufficient information that is provided by the printer. When software is loaded to a printer, changes or revisions are not tracked. Software files that are modified, added, and/or deleted are not recorded. There may be hundreds of affected software files in a file system of the printer. In certain cases, it may be possible to track modified, added, or deleted files in firmware; however, this usually only involves retrieving a printer status page. In certain cases, the status pages may not contain sufficient information as to the hundreds of affected software files. Therefore when software, in particular an application program, is modified, an entire version of the application program is sent, not just a portion needed to perform the change.
Accordingly, this invention arose out of concerns associated with the ability to determine and track software changes that are made to a printer or printing device, and to allow parties to view such changes in order to provide new or revised software to the printer or printing device.